package com.adtech.adms.commons.web.intercepter;

import java.util.Map;

import com.adtech.adms.Constants;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

/**
 * 
 * 南网项目拦截器基类，提供了判断是否Ajax请求、取Action名称和方法名称等功能。
 * @author Dormin 
 * @since 2011-11-16 
 * 
 * @Copyright (C) AD Tech Workshop All Right Reserved
 */
public abstract class BaseInterceptor extends AbstractInterceptor {

	private static final long serialVersionUID = -6342795821580321655L;

	/**
	 * 判断是否为Ajax请求
	 *
	 * @param ai 
	 * @return 如果是Ajax请求，返回true；反之，返回false
	 *
	 * @author Dormin
	 */
	protected boolean iaAjaxRequest(ActionInvocation ai){
		Map<String, Object> params = ai.getInvocationContext().getParameters();
		return params.containsKey(Constants.PARAM_KEY_AJAX);
	}

	/**
	 * 取得Action类名
	 *
	 * @param ai 
	 * @return 简单类名，不包含包名
	 *
	 * @author Dormin
	 */
	protected String getActionClassName(ActionInvocation ai){
		return ai.getAction().getClass().getSimpleName();
	}

	/**
	 * 取得Action名
	 *
	 * @param ai 
	 * @return Struts配置文件中action节点的name属性
	 *
	 * @author Dormin
	 */
	protected String getActionName(ActionInvocation ai){
		return ai.getProxy().getActionName();
	}

	/**
	 * 取得Action方法名
	 *
	 * @param ai 
	 * @return Struts配置文件中action节点的method属性
	 *
	 * @author Dormin
	 */
	protected String getMethodName(ActionInvocation ai){
		return ai.getProxy().getMethod();
	}

	protected Map<String, Object> getSession(ActionInvocation ai){
		return ai.getInvocationContext().getSession();
	}

	protected Map<String, Object> getParameters(ActionInvocation ai){
		return ai.getInvocationContext().getParameters();
	}

}
